﻿Ext.onReady(function() {
	Ext.lib.Ajax.defaultPostHeader += '; charset=utf-8';// 处理ie提交中文乱码问题
	// 定义一个checkBox
	var sm = new Ext.grid.CheckboxSelectionModel({
		singleSelect : true
	});
	// 选中记录是否高亮显示
	sm.handleMouseDown = Ext.emptyFn;
	// 定义一个ColumnModel，表头中有N列
	var cm = new Ext.grid.ColumnModel([sm,  
    {header : '物料编码', dataIndex : 'materielno'	}, 
    {header : '物料名称', dataIndex : 'materielname'	}, 
    {header : '物料规格', dataIndex : 'spec'}, 
    {header : '物料简码', dataIndex : 'spellcode'}, 
    {header : '物料大类', dataIndex : 'goodsclass'},
    {header : '价格(元)', dataIndex : 'attrib1'},
    {header : '供应商',   dataIndex : 'prov_name'}
    
    ]);

    
	var store = new Ext.data.Store({
		baseParams : {
			trancode : '12136'
		},
		proxy : new Ext.data.HttpProxy({
			url : '../' + WebServiceUrl
		}),
		reader : new Ext.data.JsonReader({
			totalProperty : 'totalProperty',
			root : 'root'
		},  
        [{name : 'idt_materiel'}, 
		{name : 'materielno'}, 
		{name : 'materielname'}, 
		{name : 'spec'}, 
		{name : 'spellcode'}, 
		{name : 'attrib1'}, 
		{name : 'attribunit1'}, 
		{name : 'attrib2'}, 
		{name : 'attribunit2'}, 
		{name : 'attrib3'}, 
		{name : 'attribunit3'}, 
		{name : 'attrib4'}, 
		{name : 'attribunit4'}, 
		{name : 'attrib5'}, 
		{name : 'attribunit5'},
		{name : 'materielClass'},
		{name : 'idt_goodsclass'},
		{name : 'remark'},
		{name : 'goodsclass'},
		{name : 'prov_name'}
		])
	});

	/* 装配 
	
	 * 注意：Ext.grid.Grid的第一个参数是渲染的id， 对应在html里应该有一个 <div id="grid"></div>的东西，这样grid才知道要把自己画到哪里。
	 * 创建完grid以后，还要用grid.render()方法，让grid开始渲染，这样才能显示出来。
	 */
	cm.defaultSortable = true; // 设置列可排序

	var grid = new Ext.grid.GridPanel({
		autoScroll: true,
		store : store,
		cm : cm,
		loadMask : {
			msg : '正在加载数据，请稍候。。。'
		},
		// 定义分页
		bbar : new Ext.PagingToolbar({
			pageSize : App.pageSize,
			store : store,
			displayInfo : true,
			displayMsg : '显示第 {0} 条到 {1} 条记录，一共 {2} 条',
			emptyMsg : "没有记录"
		}),
		sm : sm,
		title : "产品信息",
		iconCls : 'icon-grid',
		tbar : [{
			text : '添加',
			tooltip : '添加',
			handler : doAdd,
			iconCls : 'add'
		},'-',{
			text : '编辑',
			tooltip : '编辑',
			handler : doEdit,
			iconCls : 'option'
		},'-',{
			text : '删除',
			tooltip : '删除',
			handler : doDel,
			iconCls : 'remove'
		},'-','条件:', {
			xtype : "textfield",
			id : 'condition',
			selectOnFocus : true,
			 listeners :{	//注册回车查询事件
                specialKey :function(field,e){
                    if (e.getKey() == Ext.EventObject.ENTER) doSearch();
                }
			 }
		}, {
			text : '查询',
			tooltip : '查询',
			handler : doSearch,
			iconCls : 'search'
		}]
	});

	grid.on('rowclick', function(grid, t) {
		if (sm.isSelected(t))
			sm.deselectRow(t);
		else
			sm.selectRow(t, true);
	});
	grid.on('rowdblclick',function(grid, t){
		var record = grid.getStore().getAt(t);
		if(record!=null){
			//new App.ShowImg(record);
		}
	})
	store.load({params : {start : 0,limit : App.pageSize}});
	
	//添加
	function doAdd() {
		new App.AddMaterielInfo(store);
	}
	//编辑
	function doEdit() {		
		var _record = grid.getSelectionModel().getSelected();
		if (!_record) {
			Ext.MessageBox.alert('警告', '请选择一条信息，进行修改!');
		} else {
			// 修改操作
			new App.EditMaterielInfo(grid);
		}
	}
	// 删除
	function doDel() {
		var rows = grid.getSelectionModel().getSelections();// 返回值为 Record 数组
		if (rows.length == 0) {
			Ext.MessageBox.alert('警告', '最少选择一条信息，进行删除!');
		} else {
			Ext.MessageBox.confirm('提示框', '您确定要进行该操作？', function(btn) {
				if (btn == 'yes') {
					if (rows) {
						for (var i = 0; i < rows.length; i++) {
							// 删除]
							Ext.Ajax.request({
								url : '../' + WebServiceUrl,
								params : {
									trancode : '12134',
									idt_materiel : rows[i].get('idt_materiel')
								},
								success : function(result) {
									json = Ext.util.JSON.decode(result.responseText);
									if (json.success) {
										Ext.MessageBox.alert('操作成功',json.message);
										store.reload();
									} else {
										Ext.MessageBox.alert('操作失败',json.message);
									}
								}
							});
						}
					}
				}

			})
		}
	}
	// 查询函数 
	function doSearch() {
		var condition = Ext.get('condition').dom.value;
		store.baseParams = {
			condition : condition,
			trancode : '12136'
		};
		store.load({
			params : {
				start : 0,
				limit : App.pageSize
			}
		});
	}
	
	//构建Materiel节点树
	var Tree = Ext.tree; 
	//确定展开节点的类型信息
	var idtGoodsclass = '0';
	//定义根节点的Loader
	var treeloader=new Tree.TreeLoader({
		baseParams :{
			trancode:'MaterielTree',
			idtGoodsclass:'0'
		},
		dataUrl:'../'+WebServiceUrl
	}); 
	//异步加载根节点
	var rootnode=new Tree.AsyncTreeNode({
		text:'全部'
	});     
   var treepanel = new Tree.TreePanel({                
        border:false,          //边框
        animate:true,         //动画效果
        autoScroll:true,      //自动滚动
        containerScroll:true,
        lines:false,
        loader:treeloader
	}); 
   //设置根节点
	treepanel.setRootNode(rootnode);
	rootnode.expand();
	treepanel.on('click',treeClick);	
	treepanel.loader.on("beforeload",treeLoader);
	
	function treeLoader(treeLoader,node) { 
	   idtGoodsclass=node.attributes.description;
       treeLoader.baseParams={
       	trancode:'MaterielTree',
       	idtGoodsclass:idtGoodsclass
       }
    }; 
	
	function treeClick(node){
		if(node.isLeaf()){
			store.baseParams.spec=node.text;
			store.reload();
		}else if(node.isRoot){
			store.baseParams.spec='';
			store.reload();
		}
	}
	var viewport = new Ext.Viewport({
        layout:'border',
        border:false,
        id:'viewport',
		items:[{
			title:'物料大类',
			split:true,
			collapsible:false,
			autoScroll:true,
			region:'west',
			width:200,
			items:treepanel
		},{
			collapsible:false,
			border:false,
			autoScroll: true,
			region:'center',
			layout:'fit',
			items:grid
		}]
	});
})
